package dxf.entities;

import dxf.DXFPoint;

/**
 * Un oggetto della classe <code>Rectangle</code> permette di rappresentare un rettangolo
 * 
 * @author Andrea Zonca
 * @author Michele Brignoli
 * @version 2.0
 */
public class Rectangle{ //extends Entity{

	private double startX;			// coordinata x di origine del rettangolo (vertice2)
	private double startY;			// coordinata y di origine del rettangolo (vertice1)
	
	private DXFPoint vert1;		// vertice inferiore-sinistro del rettangolo
	private DXFPoint vert2;		// vertice inferiore-destro del rettangolo
	private DXFPoint vert3;		// vertice superiore-destro del rettangolo
	private DXFPoint vert4;		// vertice superiore-sinistro del rettangolo
	
	private Line l1;	// linea che collega vert1 e vert2
	private Line l2;	// linea che collega vert2 e vert3
	private Line l3;	// linea che collega vert3 e vert4
	private Line l4;	// linea che collega vert4 e vert1
	
	/**
	 * Crea un'istanza di Rectangle
	 * @param base la base del rettangolo
	 * @param height l'altezza del rettangolo
	 */
	public Rectangle(double base, double height, double x, double y){
		startX=x;
		startY=y;
		
		this.vert1=new DXFPoint(startX, startY,0);
		this.vert2=new DXFPoint(startX+base, startY, 0);
		this.vert3=new DXFPoint(startX+base, startY+height, 0);
		this.vert4=new DXFPoint(startX, startY+height);
		
		l1 = new Line(vert1, vert2);
		l2 = new Line(vert2, vert3);
		l3 = new Line(vert3, vert4);
		l4 = new Line(vert4, vert1);
	}
	
	/**
	 * Restituisce la linea che collega <code>vert1</code> e <code>vert2</code>
	 * @return la linea che collega vert1 e vert2
	 */
	public Line getLine1(){
		return l1;
	}

	/**
	 * Restituisce la linea che collega <code>vert2</code> e <code>vert3</code>
	 * @return la linea che collega vert2 e vert3
	 */
	public Line getLine2(){
		return l2;
	}
	
	/**
	 * Restituisce la linea che collega <code>vert3</code> e <code>vert4</code>
	 * @return la linea che collega vert3 e vert4
	 */
	public Line getLine3(){
		return l3;
	}
	
	/**
	 * Restituisce la linea che collega <code>vert4</code> e <code>vert1</code>
	 * @return la linea che collega vert4 e vert1
	 */
	public Line getLine4(){
		return l4;
	}

	/**
	 * Restituisce il vertice inferiore-sinistro del rettangolo
	 * @return il DXFPoint che rappresenta il vertice inferiore-sinistro del rettangolo
	 */
	public DXFPoint getVert1(){			// vertice dal quale viene generato il testo
		return vert1;
	}
	
	/**
	 * Restituisce il vertice inferiore-destro del rettangolo 
	 * @return il DXFPoint che rappresenta il vertice inferiore-destro del rettangolo
	 */
	public DXFPoint getVert2(){	
		return vert2;
	}
	
	/**
	 * Restituisce il vertice superiore-destro del rettangolo
	 * @return il DXFPoint che rappresenta il vertice superiore-destro del rettangolo
	 */
	public DXFPoint getVert3(){
		return vert3;
	}

	/**
	 * Restituisce il vertice superiore-sinistro del rettangolo
	 * @return il DXFPoint che rappresenta il vertice superiore-sinistro del rettangolo
	 */
	public DXFPoint getVert4(){	
		return vert4;
	}
}
